티스토리 뷰
Carbon으로 Date 변경시 잘못된 날짜 값으로 노출됨.
기준 날짜에 Month, Date를 추가하여 날짜를 변경하여 호출시 원하는 날짜 값이 노출되지 않음.
$date = carbon::parse('2024-01-31');
// 참고 2024년 2월 마지막 날은 29일
// 기준 날짜에 한달하고 2일 추가하여 날짜 출력하기
// 예상하는 값은 2024-03-02
echo $date->addMonth(1)->addDay(2)->format('Y-m-d');
// 2024-03-04 ?
1월에 한달을 더하면 예상되는 날짜는 2월 마지막 날인 02-29일이 값이 나와야하나 03-02일이 출력된다.
이는 Carbon에서 월단위 이상 값을 더할 때 기준일에 무조건 월 단위 값을 더하고, 달력에 날짜 형식에 맞추는(?) 작업이 추가된다.
예를 들어 2024-01-31에 addMonth(1)을 하게 될 경우 2024-02-31이 되고 31일은 존재하지 않아 2024-02-29 에서 29일과 31일에 차이인 2일을 추가로 더한다. 해당되는 부분을 overflow로 정의하고있다. 왜 이렇게 표현하는지는 모르겠다.
해당 부분을 해결하기 위해서 withoutOverflow 함수를 사용하여 원하는 값을 출력하면 된다.
해결방안
addMonthWithoutOverflow를 사용하여 해결.
$date = carbon::parse('2024-01-31');
echo $date->addMonthWithoutOverflow(1)->addDay(2)->format('Y-m-d');
// 2024-03-02
'공부합시다 > php' 카테고리의 다른 글
Laravel Exception Test (0) | 2023.11.15 |
---|---|
Laravel 다중 DB 사용시 테스트 트랜잭션 사용하기. (0) | 2023.11.13 |
Laravel auth session + token 동시에 사용하기 (0) | 2023.09.25 |
라라벨 하나의 Router에서 여러개 인증 사용하기 (0) | 2023.09.14 |
COMPOSER 2.x 버전 설치 및 업데이트 (0) | 2023.07.13 |
댓글
- Total
- Today
- Yesterday
TAG
- django
- composer-self-update
- composer-install
- 라라벨
- 메일
- laravel-test
- php-laravel
- POP3
- 테스트_다중트랜잭션
- Laravel
- 정규식
- MySQL
- php
- session+token authorize
- eloquant
- addMonth
- 둘이상인증한번에사용하기
- VIM-COMMAND
- redis
- 자바스크립트
- graphql
- composite-primarykey
- exception-test
- graphql-php
- addMonthWithoutOverflow
- 나는욕심쟁이
- Python
- 정의
- php-composer
- vim
공지사항